package com.coderfans.redis;

import com.coderfans.serialize.ISerialize;

import java.util.Set;

/**
 * Created by ${fanchunshuai} on 2016-9-22.
 *
 * @version: V1.0
 * @Desc: redis 集合操作 接口
 * @Copyright (c) 2016 58到家-版权所有
 */
public interface ISetRedis {

    /**
     * 插入一个元素
     * @param field  bean 对象识别码（比如，user）
     * @param key    bean 对象的id
     * @param value  bean 对象的值
     * @param <T>
     * @return set集合的数量
     */
   <T> long  sadd(String field, String key, T value);

    /**
     * 删除元素
     * @param field
     * @param key
     * @param <T>
     * @return
     */
    <T> T spop(String field, String key, Class<T> value);

    /**
     * 集合中元素的个数
     * @param field
     * @param key
     * @return
     */
    long scard(String field, String key);

    /**
     * 删除一个元素
     * @param field
     * @param key
     * @param value
     * @param <T>
     * @return
     */
    <T> long srem(String field, String key, T value);

    /**
     * 是否存储value值
     * @param field
     * @param key
     * @param value
     * @param <T>
     * @return
     */
    <T> boolean sismember(String field, String key, T value);

    /**
     * 设置 序列化方式
     * @param serializer
     */
    void setSerializer(ISerialize serializer);

    /**
     * 获取所有set的值
     * @param field
     * @param key
     * @return  set<byte[]>
     */
    Set smembers(String field, String key);

}
